//专门处理考试的业务逻辑
// 1. express 框架
const express = require('express');
const examModel = require('../../model/examModel');
// 导入jwt token工具
const JwtUtil = require('../../utils/jwt');
// 导入生成id的包
const { v4: uuidv4 } = require('uuid');
// 2.创建一个后台路由
const router = express.Router();

// 删除考试(考试自己删除)
router.post('/remove', async (req, res) => {
    let { topic_lib_id } = req.body;
    let token = req.headers.token;
    // 判断考试登录状态
    let jwt = new JwtUtil(token);
    // 返回一个对象（包含考试身份）
    let result = jwt.verifyToken();
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        // 提醒考试重新登录
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        let user_id = result.data;
        await examModel.remove(topic_lib_id, user_id).then(content => {
            res.send(content)
        }).catch(
            err => {
                res.send(err);
            }
        )
    }
})

// 删除考试（管理员删除）
router.post('/delete', async (req, res) => {
    let { topic_lib_id } = req.body;
    let token = req.headers.token;
    // 判断考试登录状态
    let jwt = new JwtUtil(token);
    // 返回一个对象（包含考试身份）
    let result = jwt.verifyToken();
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        // 提醒考试重新登录
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        await examModel.delete(topic_lib_id).then(content => {
            res.send(content)
        }).catch(
            err => {
                res.send(err);
            }
        )
    }
})

// 考试列表
router.get('/list', async (req, res) => {
    let { page_num, page_size } = req.query;
    await examModel.list(page_num, page_size).then(content => {
        res.send(content)
    }).catch(
        err => {
            res.send(err);
        }
    )
})

router.get('/list2', async (req, res) => {
    let token = req.headers.token;
    // 判断考试登录状态
    let jwt = new JwtUtil(token);
    // 返回一个对象（包含考试身份）
    let result = jwt.verifyToken();
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        // 提醒考试重新登录
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        let user_id = result.data;
        await examModel.list2(user_id).then(content => {
            res.send(content)
        }).catch(
            err => {
                res.send(err);
            }
        )
    }

})

router.get('/list3', async (req, res) => {
    let { page_num, page_size } = req.query;
    let token = req.headers.token;
    // 判断考试登录状态
    let jwt = new JwtUtil(token);
    // 返回一个对象（包含考试身份）
    let result = jwt.verifyToken();
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        // 提醒考试重新登录
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        let user_id = result.data;
        await examModel.list3(page_num, page_size,user_id).then(content => {
            res.send(content)
        }).catch(
            err => {
                res.send(err);
            }
        )
    }

})
// 考试详情
router.get('/detail', async (req, res) => {
    let { topic_lib_id , exam_id} = req.query;
    let token = req.headers.token;
    // 判断考试登录状态
    let jwt = new JwtUtil(token);
    // 返回一个对象（包含考试身份）
    let result = jwt.verifyToken();
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        // 提醒考试重新登录
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        await examModel.detail(topic_lib_id).then(content => {
            res.send(content)
        }).catch(
            err => {
                res.send(err);
            }
        )
    }
})

// 搜索考试
router.get('/search', async (req, res) => {
    let { keyword } = req.query;
    await examModel.search(keyword).then(content => {
        res.send(content)
    }).catch(
        err => {
            res.send(err);
        }
    )
})

// 统计考试
router.get('/total', async (req, res) => {
    let token = req.headers.token;
    // 判断考试登录状态
    let jwt = new JwtUtil(token);
    // 返回一个对象（包含考试身份）
    let result = jwt.verifyToken();
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        // 提醒考试重新登录
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        let user_id = result.data;
        await examModel.total(user_id).then(content => {
            res.send(content)
        }).catch(
            err => {
                res.send(err);
            }
        )
    }

})

// 发布考试
router.get('/publish', async (req, res) => {
    let token = req.headers.token;
    let { topic_lib_id } = req.query;
    // 判断考试登录状态
    let jwt = new JwtUtil(token);
    // 返回一个对象（包含考试身份）
    let result = jwt.verifyToken();
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        // 提醒考试重新登录
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        let user_id = result.data;
        await examModel.publish(topic_lib_id).then(content => {
            res.send(content)
        }).catch(
            err => {
                res.send(err);
            }
        )
    }

})

// 获取已发布的考试
router.get('/get_publish', async (req, res) => {
    let token = req.headers.token;
    // 判断考试登录状态
    let jwt = new JwtUtil(token);
    // 返回一个对象（包含考试身份）
    let result = jwt.verifyToken();
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        // 提醒考试重新登录
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        let user_id = result.data;
        await examModel.get_publish(user_id).then(content => {
            res.send(content)
        }).catch(
            err => {
                res.send(err);
            }
        )
    }

})


// 导出考试路由
module.exports = router;